package com.lanswon.qzsmk.business;

import java.util.Map;

import com.lanswon.qzsmk.model.CenterSerialNumber;
import com.lanswon.qzsmk.vo.BussinessVo;
import com.lanswon.qzsmk.vo.RechargeCancelVo;
import com.lanswon.smk.common.kmsserror.KmssException;
import com.lanswon.smk.kmssclient.vo.KmssMac2RespVO;
import com.lanswon.smk.kmssclient.vo.KmssTacRespVO;

/**
 * 圈存业务接口
 * @author guyawei
 *
 */
public interface EPLoadBusiness {
	
	/**
	 * 圈存请求
	 * 
	 * @param bv
	 * @return
	 * @throws Exception 
	 * @throws KmssException 
	 */
	Map<String, Object>loadRequest(BussinessVo bv) throws Exception, KmssException;
	
	/**
	 * 圈存操作
	 * 
	 * @param bv
	 * @return
	 * @throws Exception 
	 * @throws KmssException 
	 */
	Map<String, Object>load(BussinessVo bv) throws Exception, KmssException;
	
	/**
	 * 圈存请求验证mac1
	 * @throws Exception 
	 * @throws KmssException 
	 */
	KmssMac2RespVO checkMac(BussinessVo  bv) throws Exception, KmssException;
	
	/**
	 * 验证圈存tac
	 * 
	 * @param bv
	 * @return
	 * @throws Exception 
	 * @throws KmssException 
	 */
	KmssTacRespVO checkTac(BussinessVo bv) throws Exception, KmssException;
	
	/**
	 * 验证消费(充值撤销)tac
	 * 
	 * @param bv
	 * @return
	 * @throws Exception 
	 * @throws KmssException 
	 */
	KmssTacRespVO checkTac(RechargeCancelVo rv) throws Exception, KmssException;
	
	/**
	 * 生成中心流水号
	 * @param csn
	 * @return
	 */
	
	String  generateCenterSerialNumber(CenterSerialNumber csn);

	/**
	 * 充值撤销效验tac
	 * @return
	 * @throws KmssException 
	 * @throws Exception 
	 */
	Map<String, Object> checkTacByRechargeCancel(RechargeCancelVo rv) throws Exception, KmssException;
}
